/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package vo;

import java.util.Collection;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.*;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

@Entity
@Table(name="endereco")
@SuppressWarnings ("serial")
public class EnderecoVO implements Serializable{

    @Id
    @SequenceGenerator( name = "cod_endereco", sequenceName = "cod_endereco_seq", allocationSize = 1 )
    @GeneratedValue( strategy = GenerationType.SEQUENCE, generator = "cod_endereco" )
    @Column (name = "cod_endereco", nullable = false)
    private int codEndereco;
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name="cod_cidade", insertable=true, updatable=true)
    @Fetch(FetchMode.JOIN)
    @Cascade(CascadeType.SAVE_UPDATE)
    private CidadeVO cidade;
    @Column (name = "rua")
    private String rua;
    @Column (name = "numero")
    private String numero;
    @Column (name = "bairro")
    private String bairro;
    @Column (name = "cep")
    private String cep;
    @Column (name = "complemento")
    private String complemento;
    @Column (name = "tipo_endereco")
    private String tipoEndereco;
    @Column(name="ativo")
    private boolean ativo;
    @OneToMany(mappedBy="endereco", fetch = FetchType.LAZY)
    @Cascade(CascadeType.SAVE_UPDATE)
    private Collection <PessoaVO> pessoa;

     //Construtor Vazio
     public EnderecoVO(){
    }

    //Construtor com Parâmetros
     public EnderecoVO(int codEndereco, String rua, String numero, String cep, String bairro,String complemento, String tipoEndereco, CidadeVO cidade)
    {
        this.codEndereco = codEndereco;
        this.cidade = cidade;
        this.rua = rua;
        this.numero = numero;
        this.cep = cep;
        this.bairro = bairro;
        this.complemento = complemento;
        this.tipoEndereco = tipoEndereco;
        this.ativo = true;
    }

    public boolean isAtivo() {
        return ativo;
    }

    public void setAtivo(boolean ativo) {
        this.ativo = ativo;
    }

    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public String getCep() {
        return cep;
    }

    public void setCep(String cep) {
        this.cep = cep;
    }

    public CidadeVO getCidade() {
        return cidade;
    }

    public void setCidade(CidadeVO cidade) {
        this.cidade = cidade;
    }

    public int getCodEndereco() {
        return codEndereco;
    }

    public void setCodEndereco(int codEndereco) {
        this.codEndereco = codEndereco;
    }

    public String getComplemento() {
        return complemento;
    }

    public void setComplemento(String complemento) {
        this.complemento = complemento;
    }

    public String getNumero() {
        return numero;
    }

    public void setNumero(String numero) {
        this.numero = numero;
    }

    public Collection<PessoaVO> getPessoa() {
        return pessoa;
    }

    public void setPessoa(Collection<PessoaVO> pessoa) {
        this.pessoa = pessoa;
    }

    public String getRua() {
        return rua;
    }

    public void setRua(String rua) {
        this.rua = rua;
    }

    public String getTipoEndereco() {
        return tipoEndereco;
    }

    public void setTipoEndereco(String tipoEndereco) {
        this.tipoEndereco = tipoEndereco;
    }




}
